{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import ifm3dpy as ifm3d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Grab one time-correlated frame off the camera with all data\n",
    "# (i.e., distance image, unit vectors,\n",
    "#  on-board computed point cloud for ground truth comparisions, etc.)\n",
    "cam = ifm3d.Camera()\n",
    "fg = ifm3d.FrameGrabber(cam, 0xFFFF)\n",
    "im = ifm3d.ImageBuffer()\n",
    "assert(fg.wait_for_frame(im, 1000))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fe6546cf160>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe660022a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Let's look at the distance image just to validate the data\n",
    "# are there\n",
    "plt.imshow(im.distance_image())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_cartesian(im):\n",
    "    #\n",
    "    # Given an ifm3d ImageBuffer `im`\n",
    "    #\n",
    "    extr = im.extrinsics()\n",
    "    tx = extr[0]\n",
    "    ty = extr[1]\n",
    "    tz = extr[2]\n",
    "\n",
    "    uvec = im.unit_vectors()\n",
    "    ex = uvec[:,:,0]\n",
    "    ey = uvec[:,:,1]\n",
    "    ez = uvec[:,:,2]\n",
    "\n",
    "    rdis = im.distance_image()\n",
    "    # cast to float\n",
    "    rdis_f = rdis.astype(np.float32)\n",
    "    if (rdis.dtype == np.float32):\n",
    "        # if the distance values from the camera were float,\n",
    "        # assume they were meters and so convert to mm\n",
    "        # for comparisions\n",
    "        rdis_f *= 1000.\n",
    "    \n",
    "    # Cartesian values in optical frame\n",
    "    x_ = ex * rdis_f + tx\n",
    "    y_ = ey * rdis_f + ty\n",
    "    z_ = ez * rdis_f + tz\n",
    "    \n",
    "    # Account for bad pixels\n",
    "    mask = rdis == 0\n",
    "    x_[mask] = 0\n",
    "    y_[mask] = 0\n",
    "    z_[mask] = 0\n",
    "\n",
    "    # convert to camera coord frame and also cast back to\n",
    "    # int16 (the ground-truth data are int16 and mm)\n",
    "    x = z_.astype(np.int16)\n",
    "    y = -(x_.astype(np.int16))\n",
    "    z = -(y_.astype(np.int16))\n",
    "    \n",
    "    return np.dstack((x, y, z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 1, 1)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# this is our off-board point cloud computation\n",
    "cloud_computed = compute_cartesian(im)\n",
    "\n",
    "# this is what was computed on the camera - I'm assuming O3D here,\n",
    "# if using O3X, you may have to type cast from float to in and convert\n",
    "# from meters to mm.\n",
    "cloud_onboard = im.xyz_image()\n",
    "\n",
    "# Let's look at the max deviation in each dimension (mm)\n",
    "x_diff = np.abs(cloud_computed[:,:,0] - cloud_onboard[:,:,0])\n",
    "y_diff = np.abs(cloud_computed[:,:,1] - cloud_onboard[:,:,1])\n",
    "z_diff = np.abs(cloud_computed[:,:,2] - cloud_onboard[:,:,2])\n",
    "\n",
    "(np.amax(x_diff), np.amax(y_diff), np.amax(z_diff)) # units are mm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
